home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 2 / DOS031.dsk / TIC-TAC-TOE.bas < prev    next >
BASIC Source File  |  2012-02-16  |  8KB  |  228 lines

  1. 0  LIST 25900
  2. 1  FOR X = 1 TO 2000: NEXT X
  3. 100  TEXT : HOME : VTAB 7
  4. 110  CLEAR 
  5. 120  DIM A(3,3)
  6. 125  FOR A = 1 TO 3: FOR B = 1 TO 3:A(A,B) = 0: NEXT B,A
  7. 130  HTAB 8: PRINT " APPLE II  TIC-TAC TOE "
  8. 140  PRINT : PRINT : PRINT " IN THIS GAME YOU ENTER YOUR MOVES AS": PRINT : PRINT "AN X CO-ORDINATE AND A Y CO-ORDINATE": PRINT : PRINT "BETWEEN 1 AND 3. E.G.(1,1; 2,2; 3,3)"
  9. 150  PRINT : PRINT : PRINT : GET A$: GET A$: GET A$
  10. 190  HOME : VTAB 5
  11. 200  PRINT "DO YOU WANT TO PLAY AGAINST THE": PRINT : PRINT "COMPUTER OR WOULD YOU LIKE TO PLAY": PRINT : PRINT "AGAINST A SECOND PERSON ('C' FOR": PRINT : PRINT "COMPUTER AND 'P' FOR A SECOND PERSON)"
  12. 220  PRINT : GET A$
  13. 225  IF A$ = "<CTRL-C>"  THEN  END : REM  CTL C
  14. 230  IF  LEFT$(A$,1) = "P"  THEN 20000
  15. 240  IF  LEFT$(A$,1) < >"C"  THEN 190
  16. 250  TEXT : HOME : VTAB 5: PRINT " YOU ARE NOW PLAYING AGAINST THE": PRINT : PRINT "COMPUTER IN A GAME OF TIC-TAC TOE"
  17. 260  GOSUB 20030
  18. 270  HOME : VTAB 5: PRINT " YOU ARE 'X', I, THE COMPUTER": PRINT : PRINT "AM THE 'O'": PRINT : PRINT : GET A$: GET A$
  19. 275  HOME 
  20. 280  GOSUB 5000
  21. 290  HOME : VTAB 13
  22. 300  INPUT " WHAT IS YOUR MOVE (AS X,Y) ";X,Y
  23. 310  IF X <1  OR X >3  OR Y <1  OR Y >3  THEN 290
  24. 400  PRINT : PRINT : PRINT "YOUR MOVE IS ";X;", ";Y;"   CORRECT (Y/N)   ";
  25. 410  GET A$
  26. 420  IF  LEFT$(A$,1) = "N"  THEN 290
  27. 430  IF  LEFT$(A$,1) < >"Y"  THEN 400
  28. 440  PRINT : PRINT 
  29. 450  IF A(X,Y) = 1  THEN 460
  30. 453  IF A(X,Y) =  -1  THEN 457
  31. 455  GOTO 470
  32. 457  PRINT "I ALL READY HAVE THAT SQUARE": PRINT : PRINT : GOTO 300
  33. 460  PRINT "YOU ALL READY HAVE THAT SQUARE": PRINT : PRINT : GOTO 300
  34. 470 A(X,Y) = 1
  35. 475  HOME 
  36. 480  GOSUB 5000
  37. 490  GOSUB 10000
  38. 495  VTAB 13
  39. 500  PRINT "NOW IT'S MY TURN"
  40. 505  REM    COMP. TURN<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-E><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>
  41. 510  IF  ABS(A(2,1) +A(3,1)) = 2  THEN A = 1
  42. 520  IF  ABS(A(1,2) +A(1,3)) = 2  THEN A = 1
  43. 530  IF  ABS(A(2,1) +A(3,1)) = 2  THEN A = 1
  44. 540  IF  ABS(A(1,1) +A(3,1)) = 2  THEN A = 2
  45. 550  IF  ABS(A(2,2) +A(2,3)) = 2  THEN A = 2
  46. 560  IF  ABS(A(1,1) +A(2,1)) = 2  THEN A = 3
  47. 570  IF  ABS(A(3,2) +A(3,3)) = 2  THEN A = 3
  48. 580  IF  ABS(A(1,3) +A(2,2)) = 2  THEN A = 3
  49. 590  IF  ABS(A(1,1) +A(1,3)) = 2  THEN A = 4
  50. 600  IF  ABS(A(2,2) +A(3,1)) = 2  THEN A = 4
  51. 610  IF  ABS(A(1,2) +A(3,2)) = 2  THEN A = 5
  52. 620  IF  ABS(A(2,1) +A(2,3)) = 2  THEN A = 5
  53. 630  IF  ABS(A(1,3) +A(3,1)) = 2  THEN A = 5
  54. 640  IF  ABS(A(1,1) +A(3,3)) = 2  THEN A = 5
  55. 650  IF  ABS(A(3,1) +A(3,3)) = 2  THEN A = 6
  56. 660  IF  ABS(A(1,2) +A(2,2)) = 2  THEN A = 6
  57. 670  IF  ABS(A(1,1) +A(1,2)) = 2  THEN A = 7
  58. 680  IF  ABS(A(2,3) +A(3,3)) = 2  THEN A = 7
  59. 690  IF  ABS(A(3,1) +A(2,2)) = 2  THEN A = 7
  60. 700  IF  ABS(A(2,1) +A(2,2)) = 2  THEN A = 8
  61. 710  IF  ABS(A(1,3) +A(3,3)) = 2  THEN A = 8
  62. 720  IF  ABS(A(3,1) +A(3,2)) = 2  THEN A = 9
  63. 730  IF  ABS(A(1,1) +A(2,2)) = 2  THEN A = 9
  64. 740  IF  ABS(A(1,3) +A(2,3)) = 2  THEN A = 9
  65. 750  IF A = 0  THEN 1000
  66. 780  ON A GOSUB 790,795,800,805,810,815,820,825,830
  67. 783  IF A(A,B) =  -1  OR A(A,B) = 1  THEN 1000
  68. 785 A(A,B) =  -1: GOTO 900
  69. 790 A = 1:B = 1: RETURN 
  70. 795 A = 2:B = 1: RETURN 
  71. 800 A = 3:B = 1: RETURN 
  72. 805 A = 1:B = 2: RETURN 
  73. 810 A = 2:B = 2: RETURN 
  74. 815 A = 3:B = 2: RETURN 
  75. 820 A = 1:B = 3: RETURN 
  76. 825 A = 2:B = 3: RETURN 
  77. 830 A = 3:B = 3: RETURN 
  78. 900  PRINT : PRINT : PRINT "MY MOVE IS ... ";: FOR I = 1 TO 1000: NEXT I: PRINT A;", ";B: PRINT : PRINT : PRINT : FOR I = 1 TO 2000: NEXT I: GOSUB 5000: GOSUB 10000: GOTO 290
  79. 999  STOP : REM <CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>
  80. 1000 A =  INT( RND(1) *3) +1
  81. 1010 B =  INT( RND(1) *3) +1
  82. 1020  IF A(A,B) = 1  THEN 1000
  83. 1030  IF A(A,B) =  -1  THEN 1000
  84. 1040 A(A,B) =  -1
  85. 1050  GOTO 900
  86. 1999  STOP 
  87. 5000  REM  DISPLAY 'BOX'
  88. 5005  TEXT 
  89. 5010  POKE 34,11
  90. 5020 A$(1) = "O"
  91. 5030 A$(2) = " "
  92. 5040 A$(3) = "X"
  93. 5050  FOR J = 6 TO 8  STEP 2
  94. 5055  VTAB J
  95. 5060  FOR I = 12 TO 30
  96. 5070  HTAB I
  97. 5080  PRINT "-";: NEXT I
  98. 5090  NEXT J
  99. 5095  VTAB 3
  100. 5100  FOR I = 1 TO 3
  101. 5110  HTAB I *6 +9
  102. 5120  PRINT I;
  103. 5130  NEXT I
  104. 5140  FOR J = 4 TO 10
  105. 5145  VTAB J
  106. 5150  FOR I = 18 TO 24  STEP 6
  107. 5160  HTAB I
  108. 5170  PRINT "!";
  109. 5180  NEXT I,J
  110. 5200  FOR I = 1 TO 3
  111. 5220  VTAB I *2 +3
  112. 5230  HTAB 10
  113. 5240  PRINT I: NEXT I
  114. 5250  FOR A = 1 TO 3
  115. 5260  FOR B = 1 TO 3
  116. 5270  VTAB B *2 +3
  117. 5280  HTAB A *6 +9
  118. 5290  PRINT A$(A(A,B) +2)
  119. 5300  NEXT B,A
  120. 5305  INVERSE 
  121. 5310  VTAB 7: HTAB 4: PRINT " Y "
  122. 5320  VTAB 1: HTAB 20: PRINT " X "
  123. 5330  NORMAL 
  124. 6000  RETURN 
  125. 6280  HTAB A *6 +9
  126. 6290  PRINT A$(A(A,B) +2)
  127. 6300  NEXT B,A
  128. 10000  REM  CHECK FOR WIN !!<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>
  129. 10025 Z = 0
  130. 10030  FOR I = 1 TO 3
  131. 10035 Z = 0
  132. 10040  FOR J = 1 TO 3
  133. 10050 Z = Z +A(I,J)
  134. 10070  NEXT J
  135. 10080  IF Z = 3  OR Z =  -3  THEN 11000
  136. 10090  NEXT I
  137. 10100  FOR J = 1 TO 3
  138. 10105 Z = 0
  139. 10110  FOR I = 1 TO 3
  140. 10120 Z = Z +A(I,J)
  141. 10140  NEXT I
  142. 10150  IF Z = 3  OR Z =  -3  THEN 11000
  143. 10160  NEXT J
  144. 10170 Z = 0
  145. 10200  FOR I = 1 TO 3
  146. 10210 Z = Z +A(I,I)
  147. 10230  NEXT I
  148. 10240  IF Z = 3  OR Z =  -3  THEN 11000
  149. 10250 Z = 0
  150. 10300  FOR I = 1 TO 3
  151. 10320 Z = Z +A(I,4 -I)
  152. 10340  NEXT I
  153. 10350  IF Z = 3  OR Z =  -3  THEN 11000
  154. 10355 Z = 0
  155. 10360  FOR I = 1 TO 3
  156. 10365  FOR J = 1 TO 3
  157. 10370 Y = A(I,J):Y =  ABS(Y)
  158. 10375 Z = Z +Y
  159. 10380  NEXT J,I
  160. 10390  IF Z = 9  THEN 12000
  161. 10400  RETURN 
  162. 11000  REM  SOMEONE WON !!<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>
  163. 11005  POP : FOR I = 1 TO 2000: NEXT I: IF Z = 3  THEN A$ = " YOU"
  164. 11010  IF Z =  -3  THEN A$ = " I"
  165. 11015  IF  ABS(Z) < >3  THEN  STOP 
  166. 11020  IF Z = 3  AND VERSN = 2  THEN A$ = PLAYER$(2)
  167. 11025  IF Z =  -3  AND VERSN = 2  THEN A$ = PLAYER$(1)
  168. 11030  TEXT : HOME : VTAB 9
  169. 11040  PRINT " TIC-TAC TOE, ";A$;" WON THE GAME !"
  170. 11050  VTAB 12: PRINT "DO YOU WANT TO PLAY ANOTHER GAME (Y/N)";
  171. 11055  GET A$
  172. 11060  IF A$ = "N"  THEN  END 
  173. 11065  PRINT 
  174. 11070  IF A$ < >"Y"  THEN 11050
  175. 11080  GOTO 100
  176. 12000  TEXT : HOME : VTAB 5
  177. 12003  POP : IF Z = 3  THEN  STOP 
  178. 12005  FOR I = 1 TO 2000: NEXT I
  179. 12010  PRINT " IT'S A TIE GAME ..."
  180. 12020  GOTO 11050
  181. 20000  TEXT : HOME : VTAB 5
  182. 20010  HTAB 1
  183. 20020  PRINT " YOU ARE NOW PLAYING THE TWO PERSON": PRINT : PRINT "VERSION OF TIC-TAC TOE"
  184. 20025  GOSUB 20030: GOTO 20100
  185. 20030  PRINT : PRINT : PRINT 
  186. 20040  PRINT "DO YOU WANT TO PLAY THIS VERSION (Y/N)";: GET A$
  187. 20050  IF A$ = "N"  THEN  POP 
  188. 20053  IF A$ = "N"  THEN 190
  189. 20054  IF A$ = "N"  THEN  GOTO 190
  190. 20055  PRINT 
  191. 20060  IF A$ < >"Y"  THEN 20040
  192. 20070  RETURN 
  193. 20100  REM  PERSON VERSION<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>
  194. 20110  TEXT : HOME : VTAB 5
  195. 20115 VERSN = 2
  196. 20120  FOR I = 1 TO 2
  197. 20130  PRINT " WHAT IS PLAYER #";I;
  198. 20140  INPUT "'S NAME  ?";PLAYER$(I)
  199. 20150  PRINT : PRINT "PLY #";I;" IS ";PLAYER$(I);".  CORRECT (Y/N) ";: GET A$: PRINT : PRINT 
  200. 20160  IF A$ = "N"  THEN 20130
  201. 20170  IF A$ < >"Y"  THEN 20150
  202. 20180  PRINT : PRINT : PRINT : PRINT : NEXT I
  203. 20200  FOR PLAYER =  -1 TO 1  STEP 2
  204. 20205  HOME : GOSUB 5000
  205. 20210  VTAB 13
  206. 20213  IF PLAYER =  -1  THEN Y = 1
  207. 20215  IF PLAYER =  -1  THEN K = 1
  208. 20217  IF PLAYER = 1  THEN K = 2
  209. 20218  IF PLAYER = 1  THEN Y = 3
  210. 20220  PRINT "IT IS ";PLAYER$(K);"'S TURN     (";A$(Y);")"
  211. 20230  PRINT 
  212. 20240  INPUT " WHAT IS YOUR MOVE (AS X,Y) ";X,Y
  213. 20245  PRINT : PRINT : PRINT PLAYER$(K);"'S MOVE IS ";X;", ";Y;".  CORRECT (Y/N) ";: GET A$
  214. 20247  IF A$ = "N"  THEN 20230: IF A$ < >"Y"  THEN 20245
  215. 20250  IF X <1  OR X >3  OR Y <1  OR Y >3  THEN 20205
  216. 20260  IF  ABS(A(X,Y)) = 1  THEN 20280
  217. 20270  GOTO 20300
  218. 20280  PRINT : PRINT "THAT SQUARE IS TAKEN ..."
  219. 20290  GOTO 20213
  220. 20300 A(X,Y) = PLAYER
  221. 20310  GOSUB 5000: GOSUB 10000
  222. 20320  NEXT PLAYER
  223. 20330  GOTO 20200
  224. 25900  REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>           <CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>FROM:  APPLE-CAN<CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J><CTRL-J>
  225. 32760  REM 
  226. 32767  REM  12/2/79/SU
  227. 60000  REM 
  228. 63997  REM DAVID & PETER CUSIMANO